<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>作用域</title>
</head>
<body>
    <script>
        //全局作用域
        // 一个html 页面打开这就是一个全局作用域
        // => window (了解)
        // 私有作用域  局部作用域 
        // 只有函数才有 if  while do while   for 他们都没有局部作用域   

        // 作用域的上下级关系 

        // 定义在哪个作用域内的函数 就是哪个作用域的子级作用域 

        // function test(){
        //     function haha(){

        //     }
        // }



        // 变量的定义
        // 定义在哪个作用域下 这个变量就是哪个作用域的私有变量 
        // 只能在这个作用域下或者这个作用域的子级作用域内使用 
        // 不能在父级作用域使用  = > 

        // function test(){
        //     var haha = 666;
        // }

        // alert(haha) //  haha is not defined
        //变量的访问 

        // 首先在自己的作用域查找  如果有 那么直接使用 
        // 如果没有自动到父作用域查找 父作用域有 那么就使用
        // 如果还没有 再往上一级 直到全局作用域 发现还没有 那么 报错
        // xx is not defined 




        // 变量的赋值
        // 现在自己的作用域内部查找 如果有直接赋值 
        // 如果没有自动到父作用域查找 父作用域有 那么就使用 停止查找
        // 父作用域如果没有再往上到父级 直到 全局作用域  


        // 那么就把这个变量定义为全局变量 再进行赋值 
        // var a = 10;


        // var b = a;

        function fn1(){
            // 父级  window 全局
            // 子级  fn2
            function fn2(){
                function fn3(){

                }
            }

            function fn4(){
                
            }
        }


    </script>
</body>
</html>